<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="carlyangTag" uri="/WEB-INF/carlyang.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>自定义有标签体的标签Iterate Tag</title>
</head>
<body>
<%
	List people = new ArrayList();
	people.add("carlyang");
	people.add("yangdong");
	people.add("杨东");
	people.add("王小二");
	people.add(999);
	pageContext.setAttribute("people", people);//将属性值放到page属性中
%>
<!-- 
自定义有标签体的标签执行过程：
	1.通过上面的java代码段定义了一个people list放了若干个元素，将这个list放到page（或其他）内置对象的属性中，属性名"people"
	2.使用自定义带标签体的标签iterates,将people属性传递给标签的items属性。
	3.iterates标签调用com.carlyang.jspservlet.tag.IterateTag，继承TagSupport覆写两方法来处理标签内容
	4.调用IterateTag类中setItems和setVar方法，将标签中的items和var值的字符串传递到IterateTag类对象中,方法名称后缀必须和属性name一致
	5.处理标签头调用IterateTag的doStartTag方法，取出page中items键属性的值判断items是否为集合，是则取出第一个对象赋值给page内置对象的var属性
		执行一次标签体<h3>${p}</h3>
	6.处理标签尾，调用IterateTag的doAfterBody方法，判断items集合的引用对象是否还有值，有则取出下一个对象赋值给page内置对象的var属性，
		再次执行一次标签体，再跳转到6开始处；否则退出执行标签体。
 -->
<h2>自定义有标签体的标签输出：</h2>
<carlyangTag:iterate items="people" var="p">
<font color="blue" size="3" face="楷体">输出集合对象：${p}<br><br></font>
</carlyangTag:iterate>

<!-- 
简单标签输出过程：
	与上面的过程类似，只是继承的类不同，前者继承TagSupport，本过程继承SimpleTagSupport，只需覆写doTag方法，采用while遍历遍历器进行输出，
并且使用this.getJspBody().invoke(null);//实时响应页面 进行标签体的调用输出
 -->
<h2>简单标签输出：</h2>
<carlyangTag:simpleIterate items="people" var="p">
<font color="blue" size="3" face="楷体">输出集合对象：${p}<br><br></font>
</carlyangTag:simpleIterate>
</body>
</html>